﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using Minecraft.Config;

namespace Minecraft.CacheRedis
{
	/// <summary>
	/// 表示RedisPubsub 配置信息类
	/// </summary>
	internal sealed class RedisPubSubConfig1 : ConfigurationSection
	{
		private RedisPubSubConfig1() { }
		private static RedisPubSubConfig1 _redisConfig;
		public static RedisPubSubConfig1 Current
		{
			get
			{
				if (_redisConfig == null)
				{
					lock (new object())
					{
						if (_redisConfig == null)
						{
							_redisConfig = (RedisPubSubConfig1)ConfigurationManager.GetSection(
							""
								);
						}
					}
				}
				return _redisConfig;
			}
		}

		/// <summary>
		/// 可写的Redis链接地址
		/// </summary>
		[ConfigurationProperty("WriteServerList", IsRequired = false)]
		public string WriteServerList
		{
			get
			{
				return (string)base["WriteServerList"];
			}
			set
			{
				base["WriteServerList"] = value;
			}
		}
		/// <summary>
		/// 可读的Redis链接地址
		/// </summary>
		[ConfigurationProperty("ReadServerList", IsRequired = false)]
		public string ReadServerList
		{
			get
			{
				return (string)base["ReadServerList"];
			}
			set
			{
				base["ReadServerList"] = value;
			}
		}
		/// <summary>
		/// 最大写链接数
		/// </summary>
		[ConfigurationProperty("MaxWritePoolSize", IsRequired = false, DefaultValue = 5)]
		public int MaxWritePoolSize
		{
			get
			{
				var maxWritePoolSize = (int)base["MaxWritePoolSize"];
				return maxWritePoolSize > 0 ? maxWritePoolSize : 5;
			}
			set
			{
				base["MaxWritePoolSize"] = value;
			}
		}
		/// <summary>
		/// 最大读链接数
		/// </summary>
		[ConfigurationProperty("MaxReadPoolSize", IsRequired = false, DefaultValue = 5)]
		public int MaxReadPoolSize
		{
			get
			{
				var maxReadPoolSize = (int)base["MaxReadPoolSize"];
				return maxReadPoolSize > 0 ? maxReadPoolSize : 5;
			}
			set
			{
				base["MaxReadPoolSize"] = value;
			}
		}
		/// <summary>
		/// 自动重启
		/// </summary>
		[ConfigurationProperty("AutoStart", IsRequired = false, DefaultValue = true)]
		public bool AutoStart
		{
			get
			{
				return (bool)base["AutoStart"];
			}
			set
			{
				base["AutoStart"] = value;
			}
		}
		/// <summary>
		/// 本地缓存到期时间，单位:秒
		/// </summary>
		[ConfigurationProperty("LocalCacheTime", IsRequired = false, DefaultValue = 36000)]
		public int LocalCacheTime
		{
			get
			{
				return (int)base["LocalCacheTime"];
			}
			set
			{
				base["LocalCacheTime"] = value;
			}
		}
		/// <summary>
		/// 是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项
		/// </summary>
		[ConfigurationProperty("RecordeLog", IsRequired = false, DefaultValue = false)]
		public bool RecordeLog
		{
			get
			{
				return (bool)base["RecordeLog"];
			}
			set
			{
				base["RecordeLog"] = value;
			}
		}

	}
}
